(() => {
	let array1 = new Array();
	let array2 = new Array();
	let array3 = new Array();
	let array4 = new Array();
	let array_size = 1000;

	for (let i = 0; i < array_size; ++i) array1[i] = i;
	for (let i = 0; i < array_size; ++i) array2[i] = i + 0.5;
	for (let i = 0; i < array_size; i++) array3[i] = `string.${i}`;
	for (let i = 0; i < array_size; i++) array4[i] = { ["obj" + i]: i };

	function TestArrayFillInt() {
		array1.fill(1, 0, array_size);
	}

	function TestArrayFillDouble() {
		array2.fill(9.9, array_size / 2, array_size);
	}

	function TestArrayFillString() {
		array3.fill('stringFill', array_size / 2, array_size);
	}

	function TestArrayFillObject() {
		array4.fill({ 'obj': 1 }, array_size / 2, array_size);
	}

	ArkTools.forceFullGC();
	let start1 = new Date().getTime();
	for (let i = 0; i < 10000; i++) {
		TestArrayFillInt();
	}
	let time1 = new Date().getTime() - start1;
	print('scene_output:Array fill TestArrayFillInt time:', time1);

	ArkTools.forceFullGC();
	let start2 = new Date().getTime();
	for (let i = 0; i < 10000; i++) {
		TestArrayFillDouble();
	}
	let time2 = new Date().getTime() - start2;
	print('scene_output:Array fill TestArrayFillDouble time:', time2);

	ArkTools.forceFullGC();
	let start3 = new Date().getTime();
	for (let i = 0; i < 10000; i++) {
		TestArrayFillString();
	}
	let time3 = new Date().getTime() - start3;
	print('scene_output:Array fill TestArrayFillString time:', time3);

	ArkTools.forceFullGC();
	let start4 = new Date().getTime();
	for (let i = 0; i < 10000; i++) {
		TestArrayFillObject();
	}
	let time4 = new Date().getTime() - start4;
	print('scene_output:Array fill TestArrayFillObject time:', time4);
})();